// 由于双方都采用最优策略，也就是说让当前先手和后手的差值最大
// 如果当前先手选了一个数字，那么接下来一定会让B - A 最大
// 那么就可以得到一个状态转换方程 f[i][j] = max(w[i] - f[i + 1][j], w[j] - f[i][j - 1])

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 110;
int n, w[N], dp[N][N], sum;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; ++i) cin >> w[i], sum += w[i];
    for(int len = 1; len <= n; ++len)
        for(int l = 1; l + len - 1 <= n; ++l)
        {
            int r = l + len - 1;
            dp[l][r] = max(w[l] - dp[l + 1][r], w[r] - dp[l][r - 1]);
        }
    // A - B = dp[i][j], A + B = sum;
    int a = (dp[1][n] + sum) / 2, b = (sum - dp[1][n]) / 2;
    cout << a << ' ' << b << endl;
    return 0;
}